/**
 * @file Persona.java
 * @brief Clase Persona
 * @author Jose Antonio Lozano y Borja Molina Zea
 * @date Marzo 2013
 */
package sgeb;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import java.sql.ResultSet;

public class Persona {

    //private Integer id;
    private String dni;
    private String nombre;
    private String apellidos;
    private String direccion;
    private String correo;
    private String sexo;
    private String localidad;
    private String provincia;
    private Date fechaNacimiento;
    private int telMovil;
    private int telFijo;
    private Date fechaIngreso;
    private int cp;
    private int id;

    /*Constructor por defecto*/
    public Persona() {
    }

    /*  public Persona(Integer id) {
     this.id = id;
     }
     */

    /*Constructor con parametros*/
    public Persona(String dni, String nombre, String apellidos, Date fechaNacimiento, String direccion, String localidad, String provincia, int cp, Date fechaIngreso, int telFijo, int telMovil, String correo, String sexo) {

	this.dni = dni;                             //DNI
	this.nombre = nombre;                       //Nombre
	this.apellidos = apellidos;                 //Apellidos
	this.direccion = direccion;                 //Dirección
	this.correo = correo;                       //Correo Electrónico
	this.cp = cp;                               //Codigo Postal
	this.fechaIngreso = fechaIngreso;           //Fecha de ingreso
	this.fechaNacimiento = fechaNacimiento;     //Fecha Nacimiento
	this.localidad = localidad;                 //Localidad
	this.provincia = provincia;                 //Provincia
	this.telFijo = telFijo;                     //telefono Fijo
	this.telMovil = telMovil;                   //Telefono Movil
	this.sexo = sexo;			    //Sexo
    }
    /*
     public Integer getId() {
     return id;
     }

     public void setId(Integer id) {
     this.id = id;
     }
     */

    /*Devuelve el DNI de una persona*/
    public String getDni() {
	return dni;
    }

    /*Asigna un DNI a una persona*/
    public void setDni(String dni) {
	this.dni = dni;
    }

    /*Devuelve el Nombre de una persona*/
    public String getNombre() {
	return nombre;
    }

    /*Asigna un nombre a una persona*/
    public void setNombre(String nombre) {
	this.nombre = nombre;
    }
    

    public String getSexo() {
	return sexo;
    }

    public void setSexo(String sexo) {
	this.sexo = sexo;
    }
    

    /*Devuelve los apellidos de una persona*/
    public String getApellidos() {
	return apellidos;
    }

    /*Asigna unos apellidos a una persona*/
    public void setApellidos(String apellidos) {
	this.apellidos = apellidos;
    }

    /*Devuelve la dirección de una persona*/
    public String getDireccion() {
	return direccion;
    }

    /*Asigna una dirección a una persona*/
    public void setDireccion(String direccion) {
	this.direccion = direccion;
    }

    /*Devuelve el correo electronico de una persona*/
    public String getCorreo() {
	return correo;
    }

    /*Asigna un correo electronico a una persona*/
    public void setCorreo(String correo) {
	this.correo = correo;
    }

    /*Devuelve el codigo postal de una persona*/
    public int getCp() {
	return cp;
    }

    /*Asigna un codigo postal a una persona*/
    public void setCp(int cp) {
	this.cp = cp;
    }

    /*Devuelve la fecha de ingreso de una persona*/
    public Date getFechaIngreso() {
	return fechaIngreso;
    }

    /*Asigna una fecha de ingreso a una persona*/
    public void setFechaIngreso(Date fechaIngreso) {
	this.fechaIngreso = fechaIngreso;
    }

    /*Devuelve la fecha de nacimiento de una persona*/
    public Date getFechaNacimiento() {
	return fechaNacimiento;
    }

    /*Asigna una fecha de nacimiento a una persona*/
    public void setFechaNacimiento(Date fechaNacimiento) {
	this.fechaNacimiento = fechaNacimiento;
    }

    /*Devuelve la localidad de una persona*/
    public String getLocalidad() {
	return localidad;
    }

    /*Asigna una localidad a una persona*/
    public void setLocalidad(String localidad) {
	this.localidad = localidad;
    }

    /*Devuelve la provincia de una persona*/
    public String getProvincia() {
	return provincia;
    }

    /*Asigna una provincia a una persona*/
    public void setProvincia(String provincia) {
	this.provincia = provincia;
    }

    /*Devuelve el telefono fijo de una persona*/
    public int getTefFijo() {
	return telFijo;
    }

    /*Asigna un telefono fijo a una persona*/
    public void setTefFijo(int telFijo) {
	this.telFijo = telFijo;
    }

    /*Devuelve el telefono movil de una persona*/
    public int getTefMovil() {
	return telMovil;
    }

    /*Asigna un telefono movil a una persona*/
    public void setTefMovil(int telMovil) {
	this.telMovil = telMovil;
    }

    public int getid() {
	return id;
    }

    /*Guarda en la BD los datos de una persona*/
    public int guardarPer(String dni, String nom, String apell, Date fnac, String dir, String loc, String prov, int cp, Date fing, int tlfFig, int tlfMov, String mail, String sexo) {

	conectar cc = new conectar();
	Connection cn = cc.conexion();
	String sql = "INSERT INTO persona (dni, nombre, apellidos, fechaNacimiento, direccion, localidad, provincia, cp, fechaIngreso, telFijo, telMovil, correo,sexo) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)";
	try {
	    //java.sql.Date sqlfnac = new java.sql.Date(fnac.getTime());
	    //java.sql.Date sqlfing = new java.sql.Date(fing.getTime());
	    PreparedStatement pst = cn.prepareStatement(sql);
	    // TODO add your handling code here:
	    pst.setString(1, dni);
	    pst.setString(2, nom);
	    pst.setString(3, apell);
	    pst.setDate(4, null);
	    pst.setString(5, dir);
	    pst.setString(6, loc);
	    pst.setString(7, prov);
	    pst.setInt(8, cp);
	    pst.setDate(9, null);
	    pst.setInt(10, tlfFig);
	    pst.setInt(11, tlfMov);
	    pst.setString(12, mail);
	    pst.setString(13, sexo);
	    int n = pst.executeUpdate();
	    if (n > 0) {
		JOptionPane.showMessageDialog(null, "registro guardado");
	    }
	} catch (SQLException ex) {
	    Logger.getLogger(Persona.class.getName()).log(Level.SEVERE, null, ex);
	}
	return cc.getLastID();
    }

    /*Modifica los datos de una persona en la BD*/
    public void ModificarPer(String dni, String nom, String apell, Date fnac, String dir, String loc, String prov, int cp, Date fing, int tlfFig, int tlfMov, String mail, String dni1,String sexo) {

	conectar cc = new conectar();
	Connection cn = cc.conexion();
	String sql;
	java.sql.Date sqlfnac = new java.sql.Date(fnac.getTime());
	java.sql.Date sqlfing = new java.sql.Date(fing.getTime());
	sql = "Update sgeb.persona Set dni = '" + dni + "',nombre='" + nom + "', apellidos='" + apell + "', fechaNacimiento='" + sqlfnac.toString() + "', direccion='" + dir + "', localidad='" + loc + "', provincia='" + prov + "', cp=" + cp + ", fechaIngreso='" + sqlfing.toString() + "', telFijo=" + sqlfing + ", telMovil=" + tlfMov + ", correo='" + mail + "',sexo='" + sexo + "'  Where persona.dni='" + dni1 + "'";
	try {
	    Statement st = cn.createStatement();
	    st.executeUpdate(sql);
	    st.close();
	} catch (SQLException ex) {
	    Logger.getLogger(Persona.class.getName()).log(Level.SEVERE, null, ex);
	}
    }

    /*Borra una persona de la BD*/
    public void borrar(String dni) {
	try {
	    conectar cc = new conectar();
	    Connection cn = cc.conexion();
	    String sql = "DELETE FROM persona WHERE dni= '" + dni + "'";
	    Statement st = cn.createStatement();
	    st.executeUpdate(sql);
	    st.close();
	    JOptionPane.showMessageDialog(null, "entrenador borrado");
	} catch (SQLException ex) {
	    Logger.getLogger(Entrenador.class.getName()).log(Level.SEVERE, null, ex);
	}
    }

    public boolean consultarPersona(String nombre) {
	try {
	    conectar cc = new conectar();
	    Connection cn = cc.conexion();
	    String sql = "select * from persona where nombre = '" + nombre + "'";
	    Statement stm = cn.createStatement();
	    ResultSet rs = stm.executeQuery(sql);
	    int n = 0;
	    while (rs.next()) {
		n++;
		this.nombre = nombre;
		this.apellidos = (rs.getString("persona.apellidos"));
		this.dni = (rs.getString("persona.dni"));
		this.direccion = (rs.getString("persona.direccion"));
		this.fechaIngreso = (rs.getDate("persona.fechaIngreso"));
		this.fechaNacimiento = (rs.getDate("persona.fechaNacimiento"));
		this.provincia = (rs.getString("persona.provincia"));
		this.localidad = (rs.getString("persona.localidad"));
		this.cp = (rs.getInt("persona.cp"));
		this.telFijo = (rs.getInt("persona.telFijo"));
		this.telMovil = (rs.getInt("persona.telMovil"));
		this.id = (rs.getInt("persona.id"));
		this.sexo = (rs.getString("persona.sexo"));
	    }

	    if (n > 0) {
		JOptionPane.showMessageDialog(null, " persona  encontrada");
		return true;
	    }
	} catch (SQLException ex) {
	    Logger.getLogger(Entrenador.class.getName()).log(Level.SEVERE, null, ex);

	}
	return false;

    }

    public boolean buscarPersona(int id) {
	try {
	    conectar cc = new conectar();
	    Connection cn = cc.conexion();
	    String sql = "select * from persona where id = '" + id + "'";
	    Statement stm = cn.createStatement();
	    ResultSet rs = stm.executeQuery(sql);
	    int n = 0;
	    while (rs.next()) {
		n++;
		this.nombre = (rs.getString("persona.nombre"));
		this.apellidos = (rs.getString("persona.apellidos"));
		this.dni = (rs.getString("persona.dni"));
		this.direccion = (rs.getString("persona.direccion"));
		this.fechaIngreso = (rs.getDate("persona.fechaIngreso"));
		this.fechaNacimiento = (rs.getDate("persona.fechaNacimiento"));
		this.provincia = (rs.getString("persona.provincia"));
		this.localidad = (rs.getString("persona.localidad"));
		this.cp = (rs.getInt("persona.cp"));
		this.telFijo = (rs.getInt("persona.telFijo"));
		this.telMovil = (rs.getInt("persona.telMovil"));
		this.id = id;
		this.correo = (rs.getString("persona.correo"));
		this.sexo = (rs.getString("persona.sexo"));

	    }

	    if (n > 0) {
		JOptionPane.showMessageDialog(null, " persona  encontrada");
		return true;
	    }
	} catch (SQLException ex) {
	    Logger.getLogger(Entrenador.class.getName()).log(Level.SEVERE, null, ex);

	}
	return false;
    }
}
